require(plotly)
require(tidyverse); theme_set(theme_bw())
require(lubridate)
require(ggrepel)
require(patchwork)
require(ggsflabel)

# 1. Introducción ------------------

source(file.path('src', 'data', '901_funcionesMapa.R'), encoding = 'UTF-8')
## Loading required package: sf
## Linking to GEOS 3.9.0, GDAL 3.2.1, PROJ 7.2.1
source(file.path('src', 'models', '900_funcionesAlmacenamientoGrafico.R'), encoding = 'UTF-8')
source(file.path('src', 'visualization', '900_funcionExtraccionDummies.R'), encoding = 'UTF-8')
source(file.path('src', 'visualization', '901_funcionesBarras.R'), encoding = 'UTF-8')

df_DIVIPOLA <-
  read_csv(file.path('.', 'data', 'processed', '798_DANE_DEPARTAMENTO.csv'))
## Rows: 33 Columns: 2
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (1): NombreDepartamento
## dbl (1): CodigoDepartamento
## 
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
df_MUNICIPIO <-
  read_csv(file.path('data', 'processed', '799_DANE_DIVIPOLA.csv'), 
           locale = locale(encoding = 'latin1'))
## Rows: 1121 Columns: 7
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (4): CODIGO_DEPARTAMENTO, NOMBRE_DEPARTAMENTO, NOMBRE_MUNICIPIO, TIPO
## dbl (3): CODIGO_MUNICIPIO, LATITUD, LONGITUD
## 
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
df <- read_csv(file.path('data', 'processed', '001_Herramienta_Procesada.csv'), 
               na = c('N/A', 'No aplica', 'NA'))
## Rows: 16 Columns: 184
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr  (157): Nombre del encuestador, Nombre del funcionario que recibe la enc...
## dbl   (16): 3.01 Existencias actuales de recetarios en el FRE, 3.03 Tiempo d...
## lgl    (8): Si la respuesta a la pregunta anterior fue "otro", indique cual:...
## dttm   (3): Marca temporal, Fecha de la visita, Fecha creación FRE
## 
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
df
## # A tibble: 16 x 184
##    `Marca temporal`    `Nombre del encue~ `Nombre del funci~ `Nombre del funcio~
##    <dttm>              <chr>              <chr>              <chr>              
##  1 2021-05-08 15:55:12 Carlos Guillermo ~ Heliodoro Kerguel~ Erick Novoa        
##  2 2021-05-10 08:38:47 Wilder Estiben Me~ Jovana Vitola Jul~ Leidy Llorente Vil~
##  3 2021-05-10 12:03:39 Carlos Guillermo ~ Paola Andrea Góme~ <NA>               
##  4 2021-05-21 15:23:40 Wilder Estiben Me~ Rafael Tapia Buen~ <NA>               
##  5 2021-05-23 15:36:50 Carlos Guillermo ~ Maria Eugenia Bar~ <NA>               
##  6 2021-05-25 21:56:53 Jhonathan Venegas  Amilcar Marquez    <NA>               
##  7 2021-05-26 11:17:20 Nicolás Alexander~ Diana Carolina Va~ Edimer Covaleda Yu~
##  8 2021-05-26 11:59:27 Nicolás Alexander~ Julieta Palacios ~ Jonathan Sánchez M~
##  9 2021-05-26 13:01:15 Nicolás Alexander~ Marly Julieth Esp~ <NA>               
## 10 2021-05-28 12:07:29 Wilder Estiben Me~ Adriana María Mur~ <NA>               
## 11 2021-05-28 12:41:31 Jhonathan Felipe ~ Sara Bacares       Pilar Pacheco      
## 12 2021-05-29 06:33:30 Jhonathan Felipe ~ Andrea Porras      <NA>               
## 13 2021-06-23 13:49:25 Nicolás Alexander~ Juan Pablo Arias   Leonor Del Carmen ~
## 14 2021-07-07 17:08:47 Carlos Guillermo ~ Juan David Apraez  <NA>               
## 15 2021-07-08 11:26:23 Wilder Estiben Me~ Andrés Alexander ~ <NA>               
## 16 2021-07-08 11:39:27 Jhonathan Venegas  Silvia Espitia Ve~ Greici Castilla    
## # ... with 180 more variables: Fecha de la visita <dttm>, Departamento <chr>,
## #   Ciudad <chr>, Dirección <chr>, E-mail <chr>, Telefono <chr>,
## #   Acto administrativo de creación <chr>, Fecha creación FRE <dttm>,
## #   Nombre del Secretario de Salud <chr>, Nombre del Gobernador <chr>,
## #   Nombre del funcionario a cargo del FRE <chr>,
## #   Profesión del funcionario a cargo del FRE <chr>,
## #   Si la respuesta a la pregunta anterior fue "otro", indique cual:...17 <chr>, ...

# 4.01. ¿Con cuales herramientas cuenta el FRE para el manejo de inventarios?-------

col1 <- '4.01. ¿Con cuales herramientas cuenta el FRE para el manejo de inventarios?'
col2 <- 'Si seleccionó paquete ofimático o software, especifique cuál...94'

ggHerramientas1 <- pull(df, col1) %>% 
  separarDummies(.) %>% 
  pivot_longer(cols = everything()) %>% 
  group_by(name) %>% 
  summarise(
    conteo = sum(value, na.rm = TRUE),
    propor = conteo/dim(df)[1],
    label1 = paste(conteo, '/', dim(df)[1])
  ) %>% 
  ggplot(aes(y = name, x = propor)) + 
  geom_bar(stat = 'identity', fill = '#6699ff', color = 'black', alpha = 0.6) + 
  geom_text(aes(label = label1), hjust = -0.8, size = 4) + 
  coord_cartesian(xlim = c(0, 1)) +
  scale_x_continuous(labels = scales::percent_format()) +
  xlab('Proporción') + 
  labs(title = 'Herramientas para el manejo de inventarios') + 
  theme(axis.title.y = element_blank(), panel.grid = element_blank())
## Warning: The `x` argument of `as_tibble.matrix()` must have unique column names if `.name_repair` is omitted as of tibble 2.0.0.
## Using compatibility `.name_repair`.
ggHerramientas1

guardarGGplot(ggHerramientas1, '071_Herramienta', 7, 5)

ggHerramientas2 <- pull(df, col2) %>% 
  {ifelse(is.na(.), pull(df, col1), pull(df, col2))} %>% 
  separarDummies() %>% 
  pivot_longer(cols = everything()) %>% 
  mutate(name = str_replace(name, 'Paquete ofimático', 'Excel')) %>% 
  group_by(name) %>% 
  summarise(
    conteo = sum(value, na.rm = TRUE),
    propor = conteo/dim(df)[1],
    label1 = paste(conteo, '/', dim(df)[1])
  ) %>% 
  ggplot(aes(y = fct_reorder(name, propor), x = propor)) + 
  geom_bar(stat = 'identity', fill = '#6699ff', color = 'black', alpha = 0.6) + 
  geom_text(aes(label = label1), hjust = -0.8, size = 4) + 
  coord_cartesian(xlim = c(0, 1)) +
  scale_x_continuous(labels = scales::percent_format()) +
  xlab('Proporción') + 
  labs(title = 'Herramientas para el manejo de inventarios') + 
  theme(axis.title.y = element_blank(), panel.grid = element_blank())

ggHerramientas2

guardarGGplot(ggHerramientas2, '072_Herramienta', 7, 5)

# 4.02. ¿Qué herramienta usa el FRE para la consolidación de anexos  -----------
# de la Resolución 1479 de 2006?

col1 <- '4.02. ¿Qué herramienta usa el FRE para la consolidación de anexos de la Resolución 1479 de 2006?'
col2 <- 'Si seleccionó paquete ofimático o software, especifique cuál...96'
  
#### REVISION

ggHerrConsolidacion <- pull(df, col2) %>% 
  {ifelse(is.na(.), pull(df, col1), pull(df, col2))} %>% 
  separarDummies() %>% 
  pivot_longer(cols = everything()) %>% 
  mutate(name = str_replace(name, 'Paquete ofimático', 'Excel')) %>% 
  group_by(name) %>% 
  summarise(
    conteo = sum(value, na.rm = TRUE),
    propor = conteo/dim(df)[1],
    label1 = paste(conteo, '/', dim(df)[1])
  ) %>% 
  mutate(name = str_wrap(name, 25)) %>% 
  ggplot(aes(y = fct_reorder(name, propor), x = propor)) + 
  geom_bar(stat = 'identity', fill = '#6699ff', color = 'black', alpha = 0.6) + 
  geom_text(aes(label = label1), hjust = -0.8, size = 4) + 
  coord_cartesian(xlim = c(0, 1)) +
  scale_x_continuous(labels = scales::percent_format()) +
  xlab('Proporción') + 
  labs(title = 'Herramientas diligenciamiento Res 1479/2006') + 
  theme(axis.title.y = element_blank(), panel.grid = element_blank())

ggHerrConsolidacion

guardarGGplot(ggHerrConsolidacion, '073_HerramientaConsol', 7, 5)

# 4.03. ¿Qué medios utiliza de manera frecuente para la ------------------
# comunicación con sus clientes? 

col1 <- "4.03. ¿Qué medios utiliza de manera frecuente para la comunicación con sus clientes?"

ggMediosComunicacion <- pull(df, col1) %>% 
  separarDummies(.) %>% 
  pivot_longer(cols = everything()) %>% 
  group_by(name) %>% 
  summarise(
    conteo = sum(value, na.rm = TRUE),
    propor = conteo/dim(df)[1],
    label1 = paste(conteo, '/', dim(df)[1])
  ) %>% 
  ggplot(aes(y = fct_reorder(name, propor), x = propor)) + 
  geom_bar(stat = 'identity', fill = '#6699ff', color = 'black', alpha = 0.6) + 
  geom_text(aes(label = label1), hjust = -0.2, size = 3) + 
  coord_cartesian(xlim = c(0, 1)) +
  scale_x_continuous(labels = scales::percent_format()) +
  xlab('Proporción') + 
  labs(title = 'Canales de comunicación FRE') + 
  theme(axis.title.y = element_blank(), panel.grid = element_blank())

ggMediosComunicacion

guardarGGplot(ggMediosComunicacion, '074_MediosComunicacion', 7, 5)

# 4.04. ¿Cómo puntuaría la velocidad de conexión de su internet? ------------------

col1 <- "4.04. ¿Cómo puntuaría la velocidad de conexión de su internet?"

escala1 <- c('Excelente', 'Buena', 'Mala', 'Muy mala')

ggConexionInternet <- pull(df, col1) %>% 
  table() %>% as_tibble() %>%
  mutate(Fct = factor(., escala1)) %>% 
  ggplot(aes(y = Fct, x = n)) + 
  geom_bar(stat = 'identity', fill = '#6699ff', color = 'black', alpha = 0.6) +
  geom_text(aes(label = n), hjust = -0.5, size = 4) + 
  coord_cartesian(xlim = c(0, 12)) +
  # scale_x_continuous(labels = scales::percent_format()) +
  xlab('Frecuencia') + 
  labs(title = 'Velocidad de conexión de Internet') + 
  theme(axis.title.y = element_blank(), panel.grid = element_blank())

ggConexionInternet

guardarGGplot(ggConexionInternet, '075_ConexionInternet', 7, 5)

col1 <- "4.05. ¿Cuántos equipos de cómputo tiene el FRE para el desarrollo de sus actividades?"

ggEquiposComputo <- pull(df, col1) %>%
  table() %>% as_tibble() %>%
  mutate(Equipos = as.double(.)) %>% 
  ggplot(aes(x = Equipos, y = n)) +
  geom_line() + 
  geom_point(size = 2) + 
  geom_text(aes(label = n), vjust = -0.9) +
  xlab('N.° de equipos') + 
  ylab('Frecuencia') + 
  coord_cartesian(ylim = c(0, 7)) +
  labs(title = 'N.° de equipos de computo en el FRE') +
  theme(panel.grid = element_blank())
ggEquiposComputo

guardarGGplot(ggEquiposComputo, '076_EquiposComputo', 6, 4)

Relación entre el número de personas (disponibilidad de recurso humano) y equipos de computo presente en las instalaciones del FRE

df_total <- df %>% rowwise() %>% 
  mutate(Profesiones = list(c_across(matches('Profesión\\sdel\\s(personal|funcionario)'))))

df_total$NoPersonas <- df_total$Profesiones %>% 
  map_dbl(function(x){sum(!is.na(x))})

# Se realiza una copia de reserva
df_total1 <- df_total

ggCorrelacionEquipos <- df_total %>%
  rename(NoEquipos = col1) %>%
  mutate(Departamento_1 = str_to_title(Departamento_1)) %>% 
  drop_na(NoEquipos) %>% 
  ggplot(aes(y = NoEquipos, x = NoPersonas)) + 
  stat_smooth(se = F, method = 'lm', lty = 'dashed', col = 'black') +
  geom_point(col = 'blue') +
  geom_label_repel(aes(label = Departamento_1), size=2) + 
  xlab('N.° de personas') +
  ylab('N.° de equipos') + 
  labs(title = 'Correlación entre personas y equipos') +
  theme(panel.grid = element_blank())  
## Note: Using an external vector in selections is ambiguous.
## i Use `all_of(col1)` instead of `col1` to silence this message.
## i See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
## This message is displayed once per session.
ggCorrelacionEquipos
## `geom_smooth()` using formula 'y ~ x'

guardarGGplot(ggCorrelacionEquipos, '077_CorrEquiposComputo', 6, 4)
## Warning: One or more parsing issues, see `problems()` for details
## `geom_smooth()` using formula 'y ~ x'

# 4.06. Los equipos de cómputo disponibles son: ------------------

col1 <- '4.06. Los equipos de cómputo disponibles son:'

ggOpinionEquipos <- pull(df, col1) %>% 
  separarDummies() %>% 
  pivot_longer(cols = everything()) %>% 
  mutate(name = str_replace(name, 'Paquete ofimático', 'Excel')) %>% 
  group_by(name) %>% 
  summarise(
    conteo = sum(value, na.rm = TRUE),
    propor = conteo/dim(df)[1],
    label1 = paste(conteo, '/', dim(df)[1])
  ) %>% 
  mutate(name = str_to_sentence(name) %>% str_wrap(30)) %>% 
  ggplot(aes(y = fct_reorder(name, conteo), x = conteo)) +
  geom_bar(stat = 'identity', fill = '#6699ff', color = 'black', alpha = 0.6) +
  geom_text(aes(label = label1), hjust = -0.8, size = 4) + 
  xlab('Proporción (%)') + 
  labs(title = 'Opinión sobre los equipos de cómputo') + 
  coord_cartesian(xlim = c(0, 10)) +
  theme(axis.title.y = element_blank(), panel.grid = element_blank())
ggOpinionEquipos

guardarGGplot(ggOpinionEquipos, '078_OpinionEquipos', 6, 4)
Gráfico de torta
@param data_frame @param nvar @param textvar
@return @export
@examples
```r pieChart <- function(data_frame, nvar, textvar){ data_frame %>% arrange(desc({{textvar}})) %>% mutate(prop = {{nvar}} / sum({{nvar}}), ncumsum = cumsum(prop) - 0.5 * prop) %>% ggplot(aes(x = ““, y = prop, fill = {{textvar}})) + geom_bar(stat=”identity”, width=1) + coord_polar(“y”, start=0) + theme_void() + theme(legend.position=“bottom”) + geom_text(aes(y = ncumsum, label = {{textvar}}), color = “white”, size=4) }
col1 <- “4.12. ¿Qué herramienta utiliza el FRE para realizar la estimación de compra de MME?”
ggHerramientasCompras <- pull(df, col1) %>% table() %>% as_tibble() %>% rename(label = ‘.’) %>% mutate(prop = n / sum(n), label1 = paste0(label, ‘’, n, ’ - ’, round(prop, 3)*100, ‘%’)) %>% pieChart(n, label1) + scale_fill_brewer(palette = ‘Set1’) + theme(legend.position = ‘none’)
ggHerramientasCompras ```
r guardarGGplot(ggHerramientasCompras, '079_HerramientasCompras', 6, 4)
# Evaluación de tiempos de etapas de compra ------------------

col1 <- "4.13. ¿Cuánto tiempo toma la etapa de estimación de la necesidad de compra de MME (en días)?"
col2 <- "4.14. ¿Cuánto tiempo toma la etapa precontractual para la compra de MME? (en semanas)"
col3 <- "4.15. ¿Cuánto tiempo toma la etapa contractual para la compra de MME? (en semanas)"
col4 <- "4.16. ¿Cuánto tiempo toma la solicitud en plataforma tecnológica? (en días)"
col5 <- "4.17. ¿Cuánto tiempo toma el despacho de los MME? (en días)"
col6 <- "4.18. ¿Cuánto tiempo transcurre en el caso de traslados desde otros departamentos desde la solicitud hasta el despacho? (en días)"


tiempos_df <- data.frame(
  T1 = pull(df, col1),
  T2 = pull(df, col2),
  T3 = pull(df, col3),
  T4 = pull(df, col4),
  T5 = pull(df, col5)
) %>%
  mutate(T2 = T2 * 7,
         T3 = T3 * 7)

df_total <- df %>% cbind(tiempos_df) %>% 
  as_tibble() %>% 
  pivot_longer(cols = matches('T[1-5]')) %>%  
  group_by(Departamento_1) %>%  
  mutate(T_total = sum(value, na.rm = T),
         Departamento_1 = str_to_sentence(Departamento_1), 
         name = factor(name, rev(paste0('T', 1:5))))

nombresCorrectos <- c('Estimación', 'Precontractual', 
                      'Contractual', 'Solicitud Plataforma', 'Despacho')


ggProcesosAdquisicion <- df_total %>% 
  ggplot(aes(x = value, y = fct_reorder(Departamento_1, T_total), group = name)) +
  geom_bar(stat = 'identity', position = 'stack', aes(fill = name)) + 
  geom_text(aes(label = value), size = 3, position = position_stack(vjust = 0.5)) +
  scale_fill_brewer(
    labels = rev(nombresCorrectos), 
    palette = 'Set3',
    name = 'Etapa') + 
  xlab('Tiempo (días)') + 
  theme(axis.title.y = element_blank(), 
        legend.position = 'bottom') + 
  labs(title = 'Seguimiento de Procesos de adquisición')
ggProcesosAdquisicion
## Warning: Removed 5 rows containing missing values (position_stack).

## Warning: Removed 5 rows containing missing values (position_stack).

guardarGGplot(ggProcesosAdquisicion, '080_ProcesosAdquisición', 12, 7)
## Warning: Removed 5 rows containing missing values (position_stack).

## Warning: Removed 5 rows containing missing values (position_stack).
plotlyProcesosAdquisicion <- df_total %>%
  mutate(Etapa1 = as.numeric(str_sub(name, -1)) %>% map_chr(~nombresCorrectos[.x])) %>% 
  plot_ly(
    type = 'bar',
    x = ~value,
    y = ~fct_reorder(Departamento_1, T_total),
    color = ~Etapa1
  ) %>% 
  layout(yaxis = list(title = NA),
         xaxis = list(title = 'Tiempo (días)'),
         barmode = 'stack') %>% 
  config(displaylogo = FALSE, displayModeBar=F)
plotlyProcesosAdquisicion
## Warning: Ignoring 5 observations
guardarPlotly(plotlyProcesosAdquisicion, '081_ProcesosAdquisición', 12, 7, 
              libdir = 'plotly')
## Warning: Ignoring 5 observations
ggProcesosAdquisicion1 <- df_total %>%
  # mutate(map(name, function(x) x))
  ggplot(aes(x = value, y = fct_reorder(Departamento_1, T_total), group = name)) +
  geom_bar(stat = 'identity', aes(fill = name)) + 
  geom_text(aes(label = value), size = 3, hjust = -0.5) +
  scale_fill_discrete(
    labels = rev(c('Estimación', 'Precontractual', 'Contractual', 'Solicitud Plataforma', 'Despacho')),
    name = 'Etapa') + 
  xlab('Tiempo (días)') + 
  facet_wrap(vars(name)) +
  theme(axis.title.y = element_blank(), 
        legend.position = 'bottom') + 
  labs(title = 'Seguimiento de Procesos de adquisición')
ggProcesosAdquisicion1
## Warning: Removed 5 rows containing missing values (position_stack).
## Warning: Removed 5 rows containing missing values (geom_text).

guardarGGplot(ggProcesosAdquisicion1, '082_ProcesosAdquisición', 8, 6)
## Warning: Removed 5 rows containing missing values (position_stack).

## Warning: Removed 5 rows containing missing values (geom_text).

# Proceso de translados interdepartamentales ------------------

ggTiemposTraslados <- df %>%
  select(Tiempo = col6, Departamento_1) %>% 
  drop_na() %>% 
  mutate(Departamento_1 = str_to_title(Departamento_1)) %>% 
  ggplot(aes(x = Tiempo, y = fct_reorder(Departamento_1, Tiempo))) + 
  geom_bar(stat = 'identity', fill = '#6699ff', color = 'black', alpha = 0.6) +
  geom_text(aes(label = Tiempo), hjust = -0.5) + 
  coord_cartesian(xlim = c(0, 8)) +
  xlab('Tiempo (días)') +
  labs(title = 'Tiempos en translados interdepartamentales') +
  theme(axis.title.y = element_blank(), panel.grid = element_blank())
## Note: Using an external vector in selections is ambiguous.
## i Use `all_of(col6)` instead of `col6` to silence this message.
## i See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
## This message is displayed once per session.
ggTiemposTraslados

guardarGGplot(ggTiemposTraslados, '083_TiemposTranslados', 6, 4)


ggTiemposTraslados1 <- df %>%
  rename(Tiempo = col6) %>%
  left_join(colombiaGeoDF, by = c('CodigoDepartamento' = 'DPTO')) %>%
  mutate(
    Departamento_1 = str_to_title(Departamento_1),
    label1 = ifelse(
      !is.na(Tiempo),
      paste0(Departamento_1, '\n', Tiempo, ' días'),
      NA_character_
    )
  ) %>%
  ggplot() +
  geom_sf(aes(geometry = geometry, fill = Tiempo)) +
  geom_sf_label_repel(aes(label = label1), size = 3) +
  labs(title = 'Tiempos para traslados interdepartamentales') +
  scale_fill_gradientn(colours = colorspace::heat_hcl(7)) +
  theme(
    axis.text = element_blank(),
    axis.title = element_blank(),
    panel.grid = element_blank()
  )
ggTiemposTraslados1
## Warning in st_point_on_surface.sfc(data$geometry): st_point_on_surface may not
## give correct results for longitude/latitude data
## Warning: Removed 7 rows containing missing values (geom_label_repel).

guardarGGplot(ggTiemposTraslados1, '084_TiemposTranslados', 8,6)
## Warning in st_point_on_surface.sfc(data$geometry): st_point_on_surface may not
## give correct results for longitude/latitude data

## Warning in st_point_on_surface.sfc(data$geometry): Removed 7 rows containing
## missing values (geom_label_repel).
rm(list = ls(pattern = '^col'))


col1 <- "4.19. ¿Qué tan conforme se encuentra el FRE con la plataforma Colombia Compra Eficiente?"
col2 <- "4.20. Justifique la respuesta a la pregunta 4.19"

escala1 <- c('Muy inconforme', 'Algo inconforme', 'Ni conforme ni inconforme',
             'Algo conforme', 'Muy conforme')

ggCompraEficiente <- select(df, Escala = col1) %>% 
  mutate(Escala = factor(Escala, level = escala1)) %>% 
  ggplot(aes(y = Escala)) + 
  geom_bar(stat = 'count', fill = '#6699ff', color = 'black', alpha = 0.6) + 
  geom_text(aes(label = ..count..), stat = 'count', hjust = -0.8) + 
  coord_cartesian(xlim = c(0, 8)) +
  xlab('Frecuencia') + 
  theme(axis.title.y = element_blank(), 
        legend.position = 'bottom') + 
  labs(title = 'Conformidad con plataforma Colombia Compra Eficiente')
ggCompraEficiente

guardarGGplot(ggCompraEficiente, '085_ConformidadColombiaCompra', 8, 6)

df %>%
  select(Deptmn = Departamento_1,
         Escala = col1,
         Justif = col2) %>% 
  mutate(
    Escala = factor(Escala, levels = escala1),
    Deptmn = str_to_title(Deptmn)) %>% 
  arrange(Escala) %>% 
  gt::gt(groupname_col = 'Escala') %>% 
  gt::tab_options(table.font.size = 9)
## Note: Using an external vector in selections is ambiguous.
## i Use `all_of(col2)` instead of `col2` to silence this message.
## i See <https://tidyselect.r-lib.org/reference/faq-external-vector.html>.
## This message is displayed once per session.
Deptmn Justif
Muy inconforme
Bolívar No les han llegado los pedidos que requieren. No tienen claridad acerca del uso de la plataforma. Aseguran que la contratación directa, como se realizaba antiguamente era más rápida y segura. Manifiesta que se debe afirmar la herramienta para que sea mas rápida y eficiente.
Norte De Santander No entienden bien el proceso porque no lo manejan.
Algo inconforme
Casanare Implementación de la plataforma en el FRE fue un proceso muy complejo y demorado. No hubo explicación detallada del proceso. Las actualizaciones de la plataforma no se ajustan con el sistema operativo de los equipos del FRE. La liberación presupuestal de la Gobernación de Casanare presenta problemas con el proceso de la plataforma, por razones legales. Por lo tanto, lo más complejo fue conectar los procesos jurídicos con la plataforma “Colombia compra eficiente”.
Tolima Es una herramienta poco eficiente y el FRE Tolima percibe un atraso en los procesos de abastecimiento de MME por parte de la UAE FNE.
Putumayo Pese a que tuvieron algunos problemas con la compra de MME a través de la plataforma el encargado del FRE manifiesta que es eficiente y con la ayuda del soporte técnico de la plataforma pudo concretar la orden de compra.
Ni conforme ni inconforme
Atlántico Anteriormente, se hacía directamente (es decir, el FRE realizaba la compra por la plataforma), pero el proceso paso a ser centralizado en la Secretaría y los tiempos para la adquisición de medicamentos son muchos mayores a los que se hacían anteriormente. El FRE aclara que esto ha generado retrasos y contratiempos en estos procesos. En el 2020 se comenzó una compra en marzo, pero terminó realizándose en agosto. En septiembre se realizó otra y se terminó completando en enero del 2021. En conclusión, no se sabe si los tiempos de demora corresponden a problemas con la plataforma o retrasos internos de la Secretaría.
Antioquia La directora del FRE de Antioquia manifiesta que en la plataforma no esta en problema central de la adquisición de MME sino que los inconvenientes centrales radican en la baja disponibilidad de productos y los largos tiempos de espera en el proceso de compra de medicamentos.
Guaviare Personal del FRE estaba acostumbrado al proceso realizado anteriormente. Al principio de la implementación de la plataforma Colombia Compra Eficiente estaban en desacuerdo por que el personal que maneja la plataforma no sabía cómo usarla. Actualmente, no tienen opiniones por que el personal del FRE no maneja esta plataforma.
Algo conforme
Huila FRE Huila fue de los primeros entes territoriales que realizaron compra por Colombia Compra Eficiente. Otros entes territoriales acudían al FRE Huila para solicitar ayuda. No obstante, al inicio de la implementación de la plataforma, estaban inconformes por las pocas capacitaciones que se hicieron.
Muy conforme
Córdoba El proceso no tarda mas de 15 minutos para realizar la compra, es veloz y eficaz.
Magdalena Debido a la agilidad del proceso puesto que antes era muy demorado.
Quindío Por la transparencia y porque se ha tornado mucho más fácil la compra de medicamentos, además es raído. Las demoras vienen son en los procesos administrativos que están ligadas a esta actividad.
Boyacá No han tenido problemas
Valle Del Cauca Persona a cargo no conoce los procedimientos
Nariño Debido a la agilidad en los procesos de compra, puesto que antes se demoraban 4 meses realizando dicha acción, ahora, tarda por mucho un mes. Se sugiere seguir realizando las compras por esta plataforma de forma indefinida.
Cauca No hay queja alguna

# 4.22. ¿Cuánto tiempo se emplea para la recepción y almacenamiento --------------
# de los medicamentos? (en días) 

colombiaGeoDF <- read_sf(file.path('data', 'external', 'colombia_geo.json'))

col1 <- "4.22. ¿Cuánto tiempo se emplea para la recepción y almacenamiento de los medicamentos? (en días)"

ggRecepcion <- df %>%
  rename(tiempoRecepcion = col1) %>%
  drop_na(tiempoRecepcion) %>%
  mutate(Departamento_1 = str_to_title(Departamento_1)) %>% 
  ggplot(aes(x = tiempoRecepcion, 
             y = fct_reorder(Departamento_1, tiempoRecepcion))) +
  geom_bar(stat = 'identity',fill = '#6699ff', color = 'black', alpha = 0.6) +
  geom_text(aes(label = tiempoRecepcion), hjust = -0.8) +
  xlab('Tiempo de recepción (días)') + 
  coord_cartesian(xlim = c(0, 9)) +
  theme(axis.title.y = element_blank(),
        panel.grid = element_blank(),
        legend.position = 'bottom') + 
  labs(title = 'Tiempos en recepción y almacenamiento de medicamentos')
ggRecepcion

guardarGGplot(ggRecepcion, '086_RecepcionMedicamento', 8, 6)

ggTiempoRecepcionMedicamentos <- df %>% 
  right_join(colombiaGeoDF, by = c('CodigoDepartamento' = 'DPTO')) %>% 
  rename(tiempoRecepcion = col1) %>%
  # drop_na(tiempoRecepcion) %>%
  ggplot() +
  geom_sf(aes(fill = tiempoRecepcion, geometry = geometry)) +
  scale_fill_gradientn(colours = colorspace::heat_hcl(7)) +
  theme(axis.title.y = element_blank(), 
        legend.position = 'bottom',
        axis.text = element_blank()) + 
  labs(title = 'Tiempo de recepción de medicamentos') +
  guides(
    fill = guide_colourbar(barwidth = 20, title.position = 'top', title = 'Demora (días)'))
ggTiempoRecepcionMedicamentos

guardarGGplot(ggTiempoRecepcionMedicamentos, '087_RecepcionMedicamento', 8, 6)

# 4.31. ¿Qué controles se tienen para limitar el acceso de medicamentos al personal? ------------------

col1 <- "4.31. ¿Qué controles se tienen para limitar el acceso de medicamentos al personal?"
col2 <- "Si la respuesta anterior fue otro, indique cual...116"

textoLargo <- "Procedimientos para el manejo de personal huésped, visitantes, mantenimiento o no empleados del FRE"

xDF <- pull(df, col2) %>%
  is.na() %>%
  ifelse(pull(df, col1),
         paste(pull(df, col1), pull(df, col2), sep = ',')) %>% 
  separarDummies(.)

# Existe una columna que quedó separa pese a que proviene del mismo factor

ggSeguridadMedicamentos <- xDF %>% 
  select(!colnames(xDF)[9:11]) %>% 
  mutate({{textoLargo}} := apply(xDF[,colnames(xDF)[9:11]], 1, sum) %>% as.logical()) %>% 
  # select(!Otro) %>% 
  pivot_longer(cols = everything()) %>% 
  mutate(
    name = str_wrap(name, 30),
    name = str_replace(name, 'almaceamiento', 'verificación'),
    name = str_replace(name, 'institciones', 'instituciones')) %>% 
  group_by(name) %>% 
  summarise(
    conteo = sum(value),
    propor = sum(value)/dim(df)[1],
    label1 = paste(conteo, '/', dim(df)[1])
  ) %>% 
  ggplot(aes(y = fct_reorder(name, propor), x = propor)) +
  geom_bar(stat = 'identity', fill = '#6699ff', color = 'black', alpha = 0.6) + 
  geom_text(aes(label = label1), hjust = -0.3, size = 3) + 
  coord_cartesian(xlim = c(0, 1)) +
  scale_x_continuous(labels = scales::percent_format()) +
  xlab('Proporción (%)') + 
  labs(title = 'Medidas de seguridad en almacenamiento de MME') + 
  theme(axis.title.y = element_blank(), panel.grid = element_blank())
ggSeguridadMedicamentos

guardarGGplot(ggSeguridadMedicamentos, '088_SeguridadMedicamentos', 8, 6)

# 4.32. ¿Con que frecuencia se revisan las condiciones ambientales ------------- 
# en el lugar de almacenamiento de los medicamentos?

col1 <- "4.32. ¿Con que frecuencia se revisan las condiciones ambientales en el lugar de almacenamiento de los medicamentos?"


etiquetasFrecuencia <- c('Diaria', 'Dos veces al día', 'Dos veces a la semana',
                         'Tres veces a la semana', 'Una vez a la semana',
                         'Cada mes',
                         'No se revisan condiciones\nambientales') 

ggFrecCondiciones <- pull(df, col1) %>% 
  table() %>% as_tibble() %>% 
  rename(Frec = '.') %>% 
  add_row(Frec = etiquetasFrecuencia[3], n = 0) %>% 
  add_row(Frec = etiquetasFrecuencia[4], n = 0) %>% 
  add_row(Frec = etiquetasFrecuencia[5], n = 0) %>% 
  add_row(Frec = etiquetasFrecuencia[6], n = 0) %>% 
  mutate(Frec = str_wrap(Frec, 30),
         Frec = factor(Frec, levels = rev(etiquetasFrecuencia))) %>%
  ggplot(aes(y = Frec, x =  n)) + 
  geom_bar(stat = 'identity', fill = '#6699ff', color = 'black', alpha = 0.6) + 
  labs(title = 'Frec. de revisión de condiciones ambientales') + 
  geom_text(aes(label = n), hjust = -0.6, size = 4) + 
  coord_cartesian(xlim = c(0, 10)) + 
  xlab("Frecuencia") +
  theme(axis.title.y = element_blank(), panel.grid = element_blank())
ggFrecCondiciones

guardarGGplot(ggFrecCondiciones, '089_FrecuenciaRevisionCondiciones', 6, 4)

# 4.33. ¿Qué equipo o tecnología se utiliza para el control y ------------------
# seguimiento de condiciones ambientales? 

col1 <- "4.33. ¿Qué equipo o tecnología se utiliza para el control y seguimiento de condiciones ambientales?"

ggMetodosControlAmb <- pull(df, col1) %>% 
  separarDummies(.) %>% 
  pivot_longer(cols = everything()) %>% 
  mutate(
    name = str_wrap(name, 30),
    name = str_replace(name, 'almaceamiento', 'verificación'),
    name = str_replace(name, 'institciones', 'instituciones')) %>% 
  group_by(name) %>% 
  summarise(
    conteo = sum(value),
    propor = sum(value)/dim(df)[1],
    label1 = paste(conteo, '/', dim(df)[1])
  ) %>% 
  ggplot(aes(y = fct_reorder(name, propor), x = propor)) +
  geom_bar(stat = 'identity', fill = '#6699ff', color = 'black', alpha = 0.6) + 
  geom_text(aes(label = label1), hjust = -0.3, size = 3) + 
  coord_cartesian(xlim = c(0, 1)) +
  scale_x_continuous(labels = scales::percent_format()) +
  xlab('Proporción (%)') + 
  labs(title = 'Tecnologías de control y seguimiento de condiciones ambientales') + 
  theme(axis.title.y = element_blank(), panel.grid = element_blank())
ggMetodosControlAmb

guardarGGplot(ggMetodosControlAmb, '090_MetodoSeguimControlAmb', 6, 4)

# 4.34. ¿Cada cuánto se hace la calibración y mantenimiento de los equipos? ------------------

col1 <- "4.34. ¿Cada cuánto se hace la calibración y mantenimiento de los equipos?"

calibMant <- c("Entre 1 a 3 meses",
  "Entre 3 a 6 meses",
  "Entre 6 a 9 meses",
  "Entre 9 a 12 meses",
  "En periodos mayores a 12 meses",
  "No se realiza")

ggCalibMant <- select(df, col1 = col1) %>%
  mutate(col1 = factor(col1, calibMant)) %>% 
  ggplot(aes(y = col1)) + 
  geom_bar(stat = 'count', fill = '#6699ff', color = 'black', alpha = 0.6) + 
  geom_text(aes(label = ..count..), stat='count', hjust = -0.8, size = 4) + 
  xlab('Frecuencia') + 
  scale_y_discrete(drop = FALSE) +
  coord_cartesian(xlim = c(0, 13)) +
  labs(title = "Frecuencia de calibración/mantenimiento equipos") + 
  theme(axis.title.y = element_blank())
ggCalibMant

guardarGGplot(ggCalibMant, '091_FrecSeguimientoCalibracion', 6, 4)

# 4.36. ¿Con que otros medicamentos o productos se comparten los ----------------
# MME en el almacén?

col1 <- "4.36. ¿Con que otros medicamentos o productos se comparten los MME en el almacén?"

ggOtrosProductos <- pull(df, col1) %>% 
  separarDummies() %>% 
  select(-2) %>% 
  pivot_longer(cols = everything()) %>% 
  mutate(
    name = str_wrap(name, 30),
    name = str_replace(name, 'almaceamiento', 'verificación'),
    name = str_replace(name, 'institciones', 'instituciones')) %>% 
  group_by(name) %>% 
  summarise(
    conteo = sum(value),
    propor = sum(value)/dim(df)[1],
    label1 = paste(conteo, '/', dim(df)[1])
  ) %>% 
  ggplot(aes(y = fct_reorder(name, propor), x = propor)) +
  geom_bar(stat = 'identity', fill = '#6699ff', color = 'black', alpha = 0.6) + 
  geom_text(aes(label = label1), hjust = -0.3, size = 3) + 
  coord_cartesian(xlim = c(0, 1)) +
  scale_x_continuous(labels = scales::percent_format()) +
  xlab('Proporción (%)') + 
  labs(title = 'Tecnologías de control y seguimiento de condiciones ambientales') + 
  theme(axis.title.y = element_blank(), panel.grid = element_blank())
ggOtrosProductos

guardarGGplot(ggOtrosProductos, '092_ProductosCompartidos', 8, 6)

# 4.38. ¿Qué tan conforme se encuentra el FRE el transporte de ------------------
# los MME desde el FNE?

col1 <- "4.38. ¿Qué tan conforme se encuentra el FRE el transporte de los MME desde el FNE?"
col2 <- "4.39. Justifique la respuesta a la pregunta 4.38."

escalaLikert <- c("Muy incoforme", "Algo inconforme",
                  "Ni conforme ni inconforme",
                  "Algo conforme", "Muy conforme")

ggTransporte <- select(df, likert = col1) %>% 
  mutate(likert = factor(likert, levels = escalaLikert)) %>% 
  ggplot(aes(y = likert)) + 
  geom_bar(stat = 'count', fill = '#6699ff', color = 'black', alpha = 0.6) + 
  geom_text(aes(label = ..count..), stat = 'count', hjust = -0.5) +
  xlab('Frecuencia') + 
  coord_cartesian(xlim = c(0, 7)) + 
  labs(title = 'Conformidad con el servicio de transporte desde el FNE') + 
  theme(axis.title.y = element_blank(), panel.grid = element_blank())
ggTransporte

guardarGGplot(ggTransporte, '093_TransporteProductos', 6, 4)


df %>%
  select(Deptmn = Departamento_1,
         Escala = col1,
         Justif = col2) %>% 
  mutate(
    Escala = factor(Escala, levels = escalaLikert),
    Deptmn = str_to_title(Deptmn)) %>% 
  arrange(Escala) %>% 
  gt::gt(groupname_col = 'Escala') %>% 
  gt::tab_options(table.font.size = 9)
Deptmn Justif
Muy incoforme
Norte De Santander Servientrega, ellos pagan, no les gusta el servicio de medicamento, no los enrutan bien, llegan las cajas deformadas no aseguran el medicamento. A final y a principio de año es muy tortuoso el FNE les debe 10 millones de pesos. No se ha cumplido el FNE es el que ha colocado. 2 años.
Tolima Mala experiencia en el año 2020 con la empresa de transporte. No se hizo despacho y FRE Tolima deduce una mala planificación en la contratación del transporte por parte del FNE.
Valle Del Cauca Problemas de embalaje y muchos problemas de averías
Cauca Bastantes averías
Algo inconforme
Atlántico El FRE aclara que últimamente las entregas son demoradas y que ha tenido que recurrir a otros convenios para poder acceder a los medicamentos. Por ejemplo, al inicio de este año se logró llevar los MME desde Bogotá, por medio del transportador de las vacunas, evitando así el riesgo de desabastecimiento que se venia presentando.
Magdalena Se expresa que al llegar lo medicamentos al FRE, no se están manejando en condiciones óptimas puesto que están llegando en el platón de una camioneta destapada sin nada que las proteja del calor y la luz solar.
Ni conforme ni inconforme
Antioquia Se han visto inconvenientes en la etapa de transporte de los productos ya que las condiciones de temperatura y humedad que da el intermediario pueden estar comprometiendo la estabilidad de los medicamentos. En ocasiones arriban órdenes de compra inconclusas o en distintos días de entrega, además que se afirma que el tiempo que los MME están en poder del transportador es demasiado extenso.
Putumayo El encargado del FRE no ha concebido una opinión concreta del trasportador ya que su vinculación al ente territorial se dio posterior a la última compra de MME.
Algo conforme
Córdoba En cuestión de 5 días llegan los pedidos. Afirman que no les ha ido mal con el transportador, y que es veloz.
Bolívar Puesto que es nuevo no tiene mucha información ni experiencias con el transportador, sin embargo, hasta ahora no se ha tenido problemas.
Huila Solo han tenido un inconveniente con el transporte de los MME, FRE Huila tuvo que ir por los medicamentos a Bogotá D.C. No obstante, FRE Huila manifiesta que con Servientrega es mucho mejor el servicio.
Casanare Una vez se notifica al FRE que los medicamentos ya se dirigen al territorio, tardan 2 días en llegar los medicamentos al FRE Casanare.
Quindío Debido a los tiempos de entrega. Son bastantes rápidos, sin embargo, hay algunos casos donde llegan algunas ampollas rotas (unidades mínimas), pero no es algo que lo justifiquen para decir que el transportador no cumple.
Muy conforme
Boyacá No han presentado problemas
Guaviare El FNE siempre responde y efectúa la devolución de los productos con averías. Personal del FRE, reconoce que cuando sucede esto es por una falla en el proceso de embalaje y no es responsabilidad de la empresa transportadora.
Nariño No se ha tenido inconvenientes con ningún operador, sea cual sea, siempre llegan rápido y sin inconvenientes.

# 4.41. ¿Cuál es la frecuencia definida para el control de ------------------
# existencias de los medicamentos? 

col1 <- "4.41. ¿Cuál es la frecuencia definida para el control de existencias de los medicamentos?"
col2 <- "4.42. Describa el proceso completo que hace el FRE para el control de existencias y fechas de vencimiento."

frecRevisionMed <- c("Varias veces al día",
  "Diaria",
  "Cada dos días",
  "Cada semana",
  "Cada quince días",
  "Cada mes")

ggFrecControlExistencias <-
  select(df, frec = col1) %>% 
  mutate(frec = factor(frec, rev(frecRevisionMed))) %>% 
  ggplot(aes(y = frec)) + 
  geom_bar(stat = 'count', fill = '#6699ff', color = 'black', alpha = 0.6) + 
  geom_text(aes(label = ..count..), stat = 'count', hjust = -0.5) +
  xlab('Frecuencia') + 
  scale_y_discrete(drop = FALSE) +
  coord_cartesian(xlim = c(0, 7)) + 
  labs(title = 'Frec. de control de existencia de medicamentos MME') + 
  theme(axis.title.y = element_blank(), panel.grid = element_blank())
ggFrecControlExistencias

guardarGGplot(ggFrecControlExistencias, '094_FrecControlExistencias', 6, 4)


gmFrecControlExistencias <- df_total %>% 
  rename(frec = col1) %>%
  left_join(colombiaGeoDF, by = c('CodigoDepartamento' = 'DPTO')) %>% 
  ggplot(aes(fill = frec)) + 
  geom_sf(aes(geometry = geometry)) + 
  scale_fill_brewer(palette = 'Set1', name = NULL) +
  theme(axis.title.y = element_blank(), 
        legend.position = 'right',
        axis.text = element_blank()) + 
  labs(title = 'Frecuencia de control de existencias')
gmFrecControlExistencias

guardarGGplot(gmFrecControlExistencias, '094_FrecControlExistenciasMapa', 6, 4)


df %>%
  select(Deptmn = Departamento_1,
         Frecuencia_Definida = col1,
         Proceso = col2) %>% 
  mutate(
    Deptmn = str_to_title(Deptmn)) %>% 
  arrange(Frecuencia_Definida) %>% 
  gt::gt(groupname_col = 'Frecuencia_Definida') %>% 
  gt::tab_options(table.font.size = 9)
Deptmn Proceso
Cada mes
Atlántico La frecuencia con la cual se realiza el control de las existencias de los medicamentos es mensual con existencias mínimas definidas por producto, puesto que este inventario es necesario para la estimación de compra de los MME, como se explicó en el numeral de compra de MME, así mismo, también se realizan técnicas de semaforización anteriormente explicadas, al igual que técnicas de almacenamiento FEFO.
Magdalena Las existencias de medicamentos se controlan mediante libro contable y archivo en Excel. Cuando se hace recepción técnica, se observan las fechas de vencimiento, así mismo, se expresa que hay casos donde los medicamentos llegan desde el FNE con fechas próxima al vencimiento.
Tolima Encargada del FRE hace el proceso para el control de existencias y fechas de vencimiento, a través de la base de datos (Excel) que se maneja en el FRE, en el sentido de que las cantidades contadas en físico deben coincidir con las registradas en la base de datos - Excel.
Quindío El control de existencias es mensual mediante el sistema PSP el consumo promedio mensual arrojado por el software es llevado a una hoja de Excel mediante la cual se calcula los máximos y mínimos requeridos de cada MME.
Nariño El control de existencias se realiza diario y para llevar control de las fechas de vencimiento, colocan los MME con fechas lejanas de vencimiento en la parte de atrás del estante. En ocasiones, no se abren los empaques puesto que la fecha de vencimiento es lejana.
Cada quince días
Norte De Santander Se descarga el inventario total, tanto físico y tanto en sistema, luego se hace la cuenta, lo realiza una sola persona.
Huila Los medicamentos son ingresados al sistema de inventario, ubicado en la plataforma tecnológica interna llamada “Extranet”. Aquí se tiene información de las unidades de MME y sus fechas de vencimiento. El personal vinculado al FRE cuenta todos las cajas y unidades de MME presentes en la bodega, mientras lleva un registro en cuaderno. Este valor se corrobora con la información disponible en la plataforma “Extranet”.
Cada semana
Boyacá Se mira en mira en los datos arrojados por el Kardex las fechas de vencimiento y se van depurando los que ya se han vencido, se tiene especial atención con Concerta y Ritalina
Valle Del Cauca La frecuencia definida para el control de existencias de los medicamentos es semanal (Viernes), el proceso completo que hace el FRE para el control de existencias y fechas de vencimiento consta de descargar del programa el listado, conteo físico, comparación con cifras del software y reporte mensual a los ministerios
Putumayo Se hace revisión en el sistema PCT, sin embargo, el funcionario del FRE manifiesta que así se lleve un adecuado control del inventario si no se esta abasteciendo continua y efectivamente el stock de MME el proceso de control de existencias y fechas de vencimiento no es del todo eficiente.
Cauca Los productos que se vencen es porque hay mucha baja rotación
Diaria
Córdoba Cada vez que se entra a el programa Softmedicamentos el aplicativo indica las fechas de vencimiento próximas a vencerse. El encargado del proceso afirma que el producto metilfenidato usualmente llega al FRE para vencerse en 8 o 9 meses. A pesar de que no deberían recibirlos por su corto tiempo de vencimiento, lo hacen porque es un medicamento de alto consumo en el departamento de Córdoba. Esta como pendiente la devolución por parte del FNE metilfenidato que se les venció.
Antioquia Todos los días se hace inventario a las 7:30 am, revisando fechas de vencimiento y cada mes, los 10 primeros días de cada mes se envía informe al FNE para recambio de importados. Para los no importados se hace esa inspección desde la compra. Si la fecha de vencimiento está muy próxima se compra para un periodo menor.
Bolívar La encargada del FRE, una auxiliar y la encargada del área jurídica están presentes en el proceso de control de existencias contra la plataforma Microsoft Access.
Casanare Para el control de existencias de MME se maneja base de datos (archivo Excel), con los lotes de los medicamentos. Esta información se mantiene actualizada y se compara con las existencias mencionadas en el libro por cada medicamento.
Guaviare En la central de medicamentos se verifican existencias de los MME y esta información se compara con el contenido del libro en físico de inventario. Cada 20 días llevan a cabo la verificación exhaustiva de existencias y fechas de vencimiento.

# 4.43. ¿Se utilizan técnicas de semaforización en el inventario? ---------------

col1 <- "4.43. ¿Se utilizan técnicas de semaforización en el inventario?"

ggTecnicasSemaforizacion <- select(df, frec = col1) %>% 
  table() %>% as_tibble() %>% 
  rename(label = '.') %>%
  mutate(
    prop = n/sum(n),
    label1 = paste0(label, "\n", round(prop,3)*100, '%')) %>% 
  pieChart(prop, label1) +
  theme(legend.position = 'none') + 
  scale_fill_brewer(palette = 'Set1') +
  labs(title = "Utilización de técnicas de semaforización de inventarios")
ggTecnicasSemaforizacion

guardarGGplot(ggTecnicasSemaforizacion, '095_UsoTecnicasSemaforizacion', 6, 4)

# 4.45. ¿El FRE tiene niveles de seguridad en el inventario definidos? ------------------

col1 <- "4.45. ¿El FRE tiene niveles de seguridad en el inventario definidos?"

ggNivelSeguridad <- select(df, frec = col1) %>% 
  table() %>% as_tibble() %>% 
  rename(label = '.') %>% 
  mutate(
    prop = n/sum(n),
    label1 = paste0(label, "\n", round(prop,3)*100, '%')) %>%
  pieChart(n, label1) +
  theme(legend.position = 'none') + 
  scale_fill_brewer(palette = 'Set1') +
  labs(title = "Utilización de nivel de seguridad en inventario")
ggNivelSeguridad

guardarGGplot(ggNivelSeguridad, '096_UsoNivelSeguridad', 6, 4)

# 4.49. ¿Se han presentado casos de vencimiento de medicamentos en --------------
# el almacén del FRE en los últimos 4 años? 

col1 <- "4.49. ¿Se han presentado casos de vencimiento de medicamentos en el almacén del FRE en los últimos 4 años?"

ggVencimientoMed <- select(df, frec = col1) %>% 
  table() %>% as_tibble() %>% 
  rename(label = '.') %>% 
  mutate(
    prop = n/sum(n),
    label1 = paste0(label, "\n", round(prop,3)*100, '%')) %>%
  pieChart(n, label1) + 
  theme(legend.position = 'none') + 
  scale_fill_brewer(palette = 'Set1') +
  labs(title = "Presentación de casos de vencimiento de medicamentos en 4 años")
ggVencimientoMed

guardarGGplot(ggVencimientoMed, '097_CasosVencimiento', 6, 4)


col2 <- "Si la respuesta anterior fue Si, indique cuales...136"

ggMedicVencidos <- pull(df, col2) %>%  
  na.omit() %>% 
  separarDummies() %>%
  pivot_longer(cols = everything()) %>% 
  mutate(
    name = str_wrap(name, 30),
    name = str_replace(name, 'almaceamiento', 'verificación'),
    name = str_replace(name, 'institciones', 'instituciones')) %>% 
  group_by(name) %>% 
  summarise(
    conteo = sum(value),
    propor = sum(value)/dim(df)[1],
    label1 = paste(conteo, '/', dim(df)[1])
  ) %>% 
  ggplot(aes(y = fct_reorder(name, propor), x = propor)) +
  geom_bar(stat = 'identity', fill = '#6699ff', color = 'black', alpha = 0.6) + 
  geom_text(aes(label = label1), hjust = -0.3, size = 3) + 
  coord_cartesian(xlim = c(0, 1)) +
  scale_x_continuous(labels = scales::percent_format()) +
  xlab('Proporción (%)') + 
  labs(title = 'Medicamentos que se han vencido en los últimos años') + 
  theme(axis.title.y = element_blank(), panel.grid = element_blank())
ggMedicVencidos

guardarGGplot(ggMedicVencidos, '098_CasosVencimiento', 6, 4)

# 4.53. Brinde una estimación del número de entidades que han ------------------
# realizado compras al FRE en el último año.

col1 <- "4.53. Brinde una estimación del número de entidades que han realizado compras al FRE en el último año."

ggEntidadesCompradoras <- df %>% select(Departamento_1, col1 = col1) %>% 
  filter(str_detect(col1, '\\d')) %>% 
  mutate(Depto1 = str_to_title(Departamento_1),
         col1 = as.numeric(col1),
         Depto1 = fct_reorder(Depto1, col1)) %>% 
  ggplot(aes(y = Depto1, yend = Depto1)) + 
  geom_segment(aes(x = 0, xend = col1), col = "#1a41bd") + 
  geom_label(aes(x = col1, label = col1), size = 3, fill = "#92abfc") + 
  theme(axis.title.y = element_blank(), panel.grid = element_blank()) + 
  xlab('N.° de inscritos en el departamento')
ggEntidadesCompradoras

guardarGGplot(ggEntidadesCompradoras, '099_NEntidadesCompradoras', 6, 4)

col2 <- "NoPersonas"

ggRecursosFRE <- df_total1 %>%
  filter(str_detect(col1, '\\d')) %>%
  select(Departamento_1, col1 = col1, NoPersonas = col2) %>%
  ungroup() %>% 
  mutate(Departamento_1 = str_to_title(Departamento_1),
         col1 = as.numeric(col1)) %>%
  ggplot(aes(x = col1, y = NoPersonas)) +
  stat_smooth(method = 'lm', lty = 'dashed', 
              fill = 'blue1', alpha = 0.1) +
  geom_point() + 
  geom_text_repel(aes(label = Departamento_1), size = 3) + 
  xlab('N.° de instituciones inscritas en el departamento') + 
  ylab('N.° de personas por FRE') + 
  theme(panel.grid = element_blank())
## Warning in mask$eval_all_mutate(quo): NAs introducidos por coerción
ggRecursosFRE
## `geom_smooth()` using formula 'y ~ x'
## Warning: Removed 5 rows containing non-finite values (stat_smooth).
## Warning: Removed 5 rows containing missing values (geom_point).
## Warning: Removed 5 rows containing missing values (geom_text_repel).

guardarGGplot(ggRecursosFRE, '100_RelacionRecursosFRE', 6, 4)
## `geom_smooth()` using formula 'y ~ x'
## Warning: Removed 5 rows containing non-finite values (stat_smooth).
## Warning: Removed 5 rows containing missing values (geom_point).
## Warning: Removed 5 rows containing missing values (geom_text_repel).